# 3. Caching

Date: 2024-03-09

## Status

Accepted

## Context

Для хранения информации о клиентах, совершаемых платежах, подписках и т.д. необходимо зранить информацию в долговременном носителе;

## Decision

Рассматриваемые варианты:
1. SQL хранилище на основе PostgreSQL 14
2. NoSQL хранилище на основе MongoDB
3. SQL хранилище на основе MS SQL Server 2022

**Плюсы решения 1:**
Возможность совершать запросы к хранилищу по различным критериям (поиск всех клиентов с неоплачеными счетами, различные критерии выбора клиентов и т.д.)

**Минусы решения 1:**
Необходимо заранее продумать модель данных, критерии индексирования. Будет затруднено хранение слабоструктурированных данных. Для построения кластера нужно применять внешнее решение (patroni)

**Плюсы решения 2:**
Возможность менять/расширять модель зранения данных. Высокопроизводительные запросы по ключевым полям. Возможность построения кластера (из коробки)

**Минусы решения 2:**
Произвольные запросы по связанным сущностям, будут не так эффективны.

**Плюсы решения 3:**
Возможность менять/расширять модель зранения данных. Высокопроизводительные запросы по ключевым полям. Возможность построения кластера (из коробки)

**Минусы решения 3:**
Произвольные запросы по связанным сущностям, будут не так эффективны.

**Выбирается решение 1**

## Consequences

Для обеспечения отказоустойчивости необходимо отдельно разворачивать кластер на patroni.
